Dynamic Adaptive Streaming over HTTP (“DASH”) is a streaming standard intended to support a media-streaming model for delivery of media content in which control of the session lies exclusively with the client. Clients may request data using the Hypertext Transfer Protocol (“HTTP”) from a DASH server, which is an HTTP server that may include one or more DASH-specific capabilities.
In DASH, each media-segment represents a collection of contiguous media data. Each media segment is present in a segment-file hosted by a DASH server. A segment-file is the concatenation of one or more contiguous media segments.
DASH supports both on-demand streaming and live streaming. In on-demand streaming, the entire media presentation is fetchable from the DASH server when any part of media presentation is fetchable. In live streaming, the entire media presentation is not necessarily fetchable when a part of the media presentation is fetchable from the DASH server. When a part of the media presentation is fetchable, it is typically constrained by the availability window of that part of the presentation. Typically, a live stream is captured, encoded and transmitted to the DASH server in (near) real time. Hence, a live stream may be unbounded and parts of the media presentation may be fetchable from the DASH server in the future and parts of the media presentation that were fetchable earlier may no longer be fetchable. The availability window sets the bounds in terms of when a part of the media presentation is fetchable from the DASH server.
In live streaming, a media presentation is typically captured, encoded into segment-files, and transmitted by the content source on the fly to the DASH server. The DASH server is required to host parts of the media presentation at times defined by the segment availability window of those parts in the playlist file. The DASH server typically would not perform post processing on the segment-files that it receives and its main purpose is typically to host the segment-files (including files that contain meta data corresponding to the media presentation if not present in the segment files) and signal to the client a description and the availability windows of each segment file via the playlist file.
In live-streaming, the DASH server must honor client requests for the parts of the media presentation that are within the bounds of their availability windows. The DASH server is not required to honor requests for the parts of the media presentation for which the availability window has passed (the DASH server could have deleted those to free up space on disk) or for which the availability window has not yet been reached (the DASH server will receive those parts of the media presentation from the content source in the future).
For live streaming, there is typically: 1) a content-source which continuously captures a live scene, encodes parts of the media presentation into segment-files, and transmits them to a DASH server on the fly; 2) the DASH server which receives and hosts the segment-files for clients and provides necessary information of these segment files in the playlist file; and 3) a client which fetches segment-files from the DASH server at times constrained the availability windows of the segment files and plays out the media presentation.
While the transport between the DASH server and client is typically reliable given it is over HTTP, the transport between the content source and the DASH server may not be reliable. This unreliability may result in one or more segment files getting dropped from the content source to the DASH server. In addition, even through the transport between the DASH server and the client may be reliable, the transport mechanism between the DASH server and client may be transient because it needs to be periodically torn down and re-established. During the time the transport between the DASH server and client is non-existent (e.g., torn down), the availability window of media segments may have shifted. This may result in the client not being able to fetch segments for which the availability window has passed. In case a segment file is missing, the client would need to skip over the interval of the media presentation associated with the missing segment-file. This skip over may result in diminished quality of user experience at the client, such as observed media presentation stalls during live playback. As examples, missing segments and skip over may result when problems occur in enhanced Multimedia Broadcast Multicast Services (“eMBMS”) links between an encoder and a DASH server, problems occur with a mobile device acting as a content source, and/or temporary losses occur in the transport connection between a DASH client and a DASH server after which segments are no longer available at the DASH server.